// 云函数请求工具类
const request = (name, data = {}) => {
  return new Promise((resolve, reject) => {
    if (!wx.cloud) {
      reject(new Error('请使用 2.2.3 或以上的基础库以使用云能力'));
      return;
    }

    if (!name) {
      reject(new Error('云函数名称不能为空'));
      return;
    }

    console.log(`开始调用云函数: ${name}`, data);

    wx.cloud.callFunction({
      name,
      data,
      success: (res) => {
        console.log(`云函数 ${name} 调用成功：`, res);
        const { result } = res;
        
        // 检查result是否存在
        if (!result) {
          console.error('云函数返回结果为空');
          reject(new Error('服务器响应异常'));
          return;
        }

        // 检查返回码
        if (result.code === 0) {
          resolve(result);
        } else {
          console.error('云函数返回错误：', result);
          reject(new Error(result.msg || '请求失败'));
        }
      },
      fail: (error) => {
        console.error(`云函数 ${name} 调用失败:`, error);
        reject(new Error(error.errMsg || '网络请求失败'));
      },
    });
  });
};

// 封装业务接口
const http = {
  // 商家登录
  merchantLogin: (data) => {
    return request("merchantLogin", data);
  },

  // 获取商家信息
  getMerchantInfo: () => {
    return request("getMerchantInfo");
  },

  // 更新商家信息
  updateMerchantInfo: (data) => {
    return request("updateMerchantInfo", data);
  },

  // 修改密码
  changePassword: (data) => {
    return request("changePassword", data);
  },

  // 用户登录
  userLogin: (data) => {
    return request("userLogin", data);
  },
};

module.exports = http;
